package com.baiku.sanhos.mapper;

import com.baiku.sanhos.pojo.dto.DrugDTO;
import com.baiku.sanhos.pojo.entity.Drug;
import com.baiku.sanhos.pojo.entity.OpenDrug;
import com.baiku.sanhos.pojo.vo.DrugVo;
import com.baiku.sanhos.pojo.vo.RecipeVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface DrugMapper extends BaseMapper<Drug> {
    /**
     * 增：添加药品
     * @param drugDTO
     */
    void addDrug(DrugDTO drugDTO);

    /**
     * 删：根据药品id删除药品
     * @param id
     */
    void deleteDrugId(Integer id);

    /**
     * 查：查看所有药品信息
     * @return
     */
    List<DrugVo> select();

    /**
     * 增
     * @return
     */
    int insert(Drug drug);
    /**
     * 查：根据关键字查询药品信息
     * @param keyword
     * @return
     */
    List<DrugVo> selectByRemark(String keyword);

    /**
     * 查：查询全部药品信息
     * @param drugNo
     * @param drugName
     * @return
     */
    int getTotalDrugs(String drugNo, String drugName);

    /**
     * 查：查询所有药品并且分页和查询
     * @param pageSize
     * @param offset
     * @param drugNo
     * @param drugName
     * @return
     */
    List<DrugVo> selectAll(int pageSize, int offset, String drugNo, String drugName);

    /**
     * 删
     * @param
     * @return
     */
    int delete(Integer id);

    /**
     * 改：根据药品id修改药品
     * @param drugDTO
     */
    void updateById(DrugDTO drugDTO);
    int SelectTotalDrugs(String drugNo,String drugName);
    List<DrugVo> selectAllDrugNoName(int pageSize, int offset, String drugNo, String drugName);
    List<DrugVo>selectByDrugNoAndUserName(String drugNo,String drugName);

    /**
     * 改
     * @param drug 实体对象
     * @return
     */
    int update(Drug drug);

    Drug queryByDrugName(String drugName);

    int insertOpenDrug(OpenDrug openDrug);

    int deleteByIdOpenDrug(Integer id);

    OpenDrug selectByIdFindMoney(Integer id);

    int updateByIdOpenDrug(Integer recipeId,Double money);

    RecipeVo selectByIdFindTotalMoney(Integer id);

    int updateByIdNumber(Integer id, Integer number);

    OpenDrug selectByIdFindNumber(Integer id);

    void updateByIdMoney(Integer recipeId,Double totalMoney);

    void updateByDrugName(String drugName, Integer inventory);

    OpenDrug queryByOrderNo(String orderNo);
}
